--------------------------------------------------------- File Leggimi di Microsoft(R) ActiveX(R) Data Objects versione 2.1 --------------------------------------------------------- (c) 1998 Microsoft Corporation. Tutti i diritti riservati. In questo documento vengono fornite informazioni aggiornate e complementari alla documentazione di Microsoft ADO. -------- SOMMARIO -------- 1. DESCRIZIONE DEL PRODOTTO 2. NUOVE CARATTERISTICHE 2.1 Metodo Seek e proprietà Index 2.2 Aggiornamento e sincronizzazione di righe 2.3 Microsoft OLE DB Persistence Provider 2.4 Microsoft Data Shaping Service per OLE DB 2.5 Microsoft OLE DB Remoting Provider 3. NOTE TECNICHE 3.1 Caratteristiche potenziate di protezione 3.2 Comportamento restrittivo 3.3 Personalizzazione delle impostazioni di protezione 4. PROBLEMI NOTI, LIMITAZIONI, SOLUZIONI ALTERNATIVE E NOTE AGGIORNATE ALLA DOCUMENTAZIONE ---------------------- 1. DESCRIZIONE DEL PRODOTTO ---------------------- ActiveX Data Objects (ADO) è un'interfaccia per l'accesso ai dati basata sull'automazione. ADO utilizza l'interfaccia OLE DB per accedere a una vasta gamma di origini dati, tra cui i dati forniti tramite ODBC. Gli utenti di RDO e di DAO dovrebbero familiarizzare rapidamente con la programmazione con ADO in quanto la progettazione complessiva di ADO è frutto dell'esperienza nello sviluppo di tali interfacce. Microsoft Remote Data Service (RDS) è un componente di ADO che fornisce un framework per la connettività e per la pubblicazione rapida ed efficace dei dati per applicazioni host di Microsoft Internet Explorer. Si basa su una tecnologia distribuita client/server che utilizza i protocolli HTTP, HTTPS (HTTP protetto tramite Secure Sockets Layer) e i protocolli di applicazione DCOM. Mediante controlli ActiveX predisposti al collegamento con database, RDS consente agli sviluppatori Web che devono creare applicazioni distribuite basate sull'utilizzo di un'elevata quantità di dati su Internet o su reti Intranet aziendali di programmare l'accesso ai dati in formato Visual Basic(R). --------------- 2. NUOVE CARATTERISTICHE --------------- ADO 2.1 fornisce diverse nuove caratteristiche per gli sviluppatori. 2.1 Metodo Seek e proprietà Index Il metodo Seek e la proprietà Index consentono una rapida individuazione basata sull'indice delle righe di un recordset. 2.2 Aggiornamento e sincronizzazione di righe La nuova modalità di "correzione delle righe" consente un controllo personalizzato degli aggiornamenti e della sincronizzazione delle righe dei recordset creati da un'operazione di JOIN. Sette nuove proprietà dinamiche controllano il comportamento di cinque metodi esistenti. 2.3 Microsoft OLE DB Persistence Provider Congiuntamente ai metodi Save e Open dell'oggetto Recordset, Microsoft OLE DB Persistence Provider consente di salvare e ripristinare un recordset in un file. Con questa versione è possibile salvare un recordset in formato Extensible Markup Language (XML), il metodo standard per la definizione di tag specificati dall'utente per dati trasportati su Internet. 2.4 Microsoft Data Shaping Service per OLE DB Microsoft Data Shaping Service per OLE DB, che supporta il linguaggio Shape per la gestione dei datiData, consente di effettuare le seguenti operazioni. 2.4.1 Modificare la forma di un recordset precedentemente modificato. Per supportare questa caratteristica, i recordset dispongono di una proprietà Name, valida per la durata del collegamento. 2.4.2 Eseguire calcoli di aggregazione su una colonna a un qualsiasi livello di un recordset formato, non limitandosi a quello immediatamente secondario. Questa funzionalità utilizza nomi di capitolo completamente validi per formare un percorso al livello e alla colonna desiderati. 2.4.3 I comandi COMPUTE parametrizzati possono avere un numero arbitrario di clausole COMPUTE intermedie tra la clausola PARAMETER e l'argomento del parametro. 2.5 Microsoft OLE DB Remoting Provider Microsoft OLE DB Remoting Provider diventa un provider di servizi standard e acquisisce nuove proprietà dinamiche che consentono migliori prestazioni, un maggiore controllo da parte dell'utente e compatibilità con ADO 2.0. ------------------ 3. NOTE TECNICHE ------------------ 3.1 Caratteristiche potenziate di protezione Questa versione include caratteristiche potenziate di protezione per oggetti ADO e RDS in modo che alcune operazioni siano consentite solo quando Internet Explorer viene eseguito in modalità "protetta". 3.1.1. Aree Con Internet Explorer 4.0 è possibile specificare impostazioni di protezione differenti per diverse "aree" in modo da personalizzare il comportamento degli oggetti ADO e RDS in quelle aree. In Internet Explorer 4.0 sono definite le seguenti quattro aree: * Area Internet * Area Intranet locale * Area siti con restrizioni * Area siti attendibili 3.1.2. Livelli di protezione Per ciascuna di queste aree è possibile specificare il livello di protezione da utilizzare. Sono disponibili i seguenti livelli di protezione: * Alto * Medio * Basso * Personalizzato Analogamente a qualsiasi altro controllo ActiveX, per fare in modo che gli oggetti ADO e RDS possano essere utilizzati con Internet Explorer 4.0, è necessario impostare il livello di protezione su "Medio" o su "Alto". Le impostazioni personalizzate consentono invece di determinare il comportamento degli oggetti ADO e RDS in modalità protetta o non protetta. 3.2 Comportamento restrittivo In base all'impostazione predefinita, qualsiasi operazione non sicura su oggetti ADO e RDS in Internet Explorer 4.0 causerà la visualizzazione di un messaggio di conferma da parte dell'utente quando si accede a pagine appartenenti alle aree "Intranet locale", "Siti attendibili" e "Internet". Le operazioni non sicure sugli oggetti ADO e RDS sono invece disattivate, in base all'impostazione predefinita, per pagine caricate dall'area "Siti con restrizioni". Di seguito viene descritto il comportamento degli oggetti ADO e RDS quando vengono eseguiti in queste modalità. 3.2.1 Oggetti sicuri Gli oggetti che seguono sono considerati "sicuri". Questo significa che le operazioni non sicure, descritte dettagliatamente nel paragrafo 3.2.3, non sono consentite in un ambiente protetto quale Internet Explorer, a meno che per l'esecuzione in una modalità non protetta non vengano utilizzate impostazioni personalizzate, e sono invece consentite in un ambiente non protetto quale Visual Basic. a. Oggetto RDS.DataControl b. Oggetto RDS.DataSpace c. Oggetto ADO Recordset 3.2.2 Oggetti non sicuri Gli oggetti che seguono sono considerati "non sicuri". Non possono quindi essere creati direttamente o indirettamente né attribuiti a un utente quando si opera in un ambiente protetto. a. Oggetto RDSServer.DataFactory b. Oggetto ADO Connection c. Oggetto ADO Command 3.2.3 Operazioni non sicure su oggetti sicuri Le operazioni RDS.DataControl, RDS.DataSpace e ADO Recordset descritte di seguito sono considerate operazioni non sicure su oggetti "sicuri". Queste operazioni, non consentite in un ambiente protetto, sono invece autorizzate in un ambiente non sicuro. a. RDS.DataControl i) Tutti gli scenari DCOM e a due livelli sull'oggetto RDS.DataControl. Questo significa che non è possibile aprire connessioni a database situati nel proprio computer locale o da server ai quali si effettua la connessione utilizzando il protocollo DCOM. ii) Tutte le operazioni a tre livelli sull'HTTP sono consentite solo al server dal quale la pagina è stata scaricata. Questo significa che la proprietà Server sull'oggetto RDS.DataControl deve essere uguale al nome dell'host (http://server) dal quale la pagina è stata scaricata. b. RDS.DataSpace i) Tutti gli scenari DCOM e a due livelli sull'oggetto RDS.DataSpace. Questo significa che non è possibile utilizzare l'oggetto RDS.DataSpace per richiamare oggetti di gestione nel proprio computer locale o utilizzando il protocollo DCOM. ii) Tutti gli scenari a tre livelli sull'HTTP sono consentiti solo al server dal quale la pagina è stata scaricata. Questo significa che il secondo parametro nella chiamata al metodo CreateObject sull'oggetto DataSpace deve puntare allo stesso server dal quale la pagina è stata scaricata. c. ADO Recordset i) Creazione di qualsiasi connessione in cui il provider non sia MS Remote. In questo modo la stringa di connessione deve iniziare con "Provider=MS Remote". Il tag "Remote Server" nella stringa di connessione deve inoltre coincidere con il nome del server da cui la pagina è stata scaricata. Le connessioni DCOM e a due livelli locali non sono ammesse. ii) Operazioni di persistenza locali, quali salvataggio di un recordset nel file system locale e apertura di un recordset da file situati nel computer locale. 3.3 Personalizzazione delle impostazioni di protezione Il comportamento di ADO/RDS è controllato dall'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri". È possibile modificare le impostazioni di protezione modificando il livello di protezione di un'area specifica. Di seguito sono riportate le impostazioni predefinite per l'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri" relativa all'area Intranet: Livello di protezione = Alto Valore = "Disattiva" Livello di protezione=Medio Valore="Disattiva" Livello di protezione=Basso Valore="Richiedi" Per informazioni sulle impostazioni predefinite relative ad altre aree di protezione, vedere la documentazione di Internet Explorer. Modificando il livello di protezione, è possibile modificare il comportamento di oggetti ADO Recordset non connessi in esecuzione nel browser. Se si desidera attivare operazioni non sicure e non si desidera che venga visualizzato un avviso tutte le volte che si tenta di eseguire tale operazione, è necessario che il valore relativo all'opzione descritta in precedenza sia impostato su "Attiva". Se inoltre si cerca di eseguire un'operazione non sicura, quale il salvataggio di un recordset in un file del file system locale, su un recordset ADO ottenuto da RDS DataControl, è necessario che il valore per questa opzione sia impostato su "Attiva". L'impostazione di "Richiedi" funziona come "Disattiva" per tali oggetti Recordset (ottenuti da RDS Datacontrol). È inoltre possibile ignorare le impostazioni predefinite accedendo direttamente alle impostazioni personalizzate di tale opzione. È possibile scegliere di disattivare completamente le operazioni non sicure descritte in precedenza, di specificare la visualizzazione di un avviso a ogni tentativo di esecuzione di un'operazione o di attivare un'operazione senza alcun avviso. È inoltre possibile specificare impostazioni personalizzate differenti per le diverse aree di protezione. Per personalizzare le impostazioni di protezione per un'area di protezione specifica, attenersi alla procedura che segue. ATTENZIONE: se si attiva l'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri" (passaggio 5), sarà possibile utilizzare QUALSIASI controllo ActiveX, sicuro o non sicuro, dall'interno delle pagine Web. In questo modo i computer degli utenti risulteranno potenzialmente esposti a controlli o a codici di script dannosi. Si consiglia quindi di attivare l'opzione solo nelle aree di protezione "Intranet locale" o "Siti attendibili" e non nell'area "Internet". 1. In Internet Explorer 4.0 scegliere Opzioni Internet dal menu Visualizza, quindi fare clic sulla scheda Protezione nella finestra di dialogo visualizzata. 2. Selezionare l'area per la quale si desidera personalizzare le impostazioni dalla casella di riepilogo a discesa Area. 3. Selezionare il pulsante di opzione Personalizzato per l'area selezionata. Verrà attivato il pulsante Impostazioni. 4. Fare clic su Impostazioni. Verrà visualizzata la finestra di dialogo Impostazioni protezione. 5. Se si desidera attivare le operazioni non sicure, descritte nel paragrafo 3.2.3, su oggetti ADO e RDS senza che venga visualizzato alcun avviso, impostare su "Attiva" l'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri" nella finestra di dialogo Impostazioni protezione, quindi scegliere OK. 6. Se si desidera che venga visualizzato un avviso a ogni tentativo di esecuzione di operazioni non sicure, descritte nel paragrafo 3.2.3, su oggetti ADO e RDS, impostare su "Richiedi" l'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri" nella finestra di dialogo Impostazioni protezione, quindi scegliere OK. 7. Se si desidera disattivare completamente le operazioni non sicure, descritte nel paragrafo 3.2.3, su oggetti ADO e RDS, impostare su "Disattiva" l'opzione "Inizializza e esegui script sui controlli ActiveX non contrassegnati come sicuri" nella finestra di dialogo Impostazioni protezione, quindi scegliere OK. 8. Se necessario, ripetere questi passaggi per personalizzare le impostazioni di protezione relative alle altre aree di protezione. 9. Scegliere OK. Il comportamento degli oggetti ADO e RDS sarà conforme alla modalità di personalizzazione specificata. Le impostazioni specificate riguardano operazioni su oggetti ADO e RDS nell'area di protezione specificata, come descritto nel paragrafo 3.2.3, quali l'apertura di connessioni a due livelli locali, il funzionamento con il protocollo DCOM, la connessione a un server diverso da quello da cui la pagina è stata originariamente scaricata e l'apertura e il salvataggio di recordset su file presenti nel computer locale. Se si impostano le opzioni personalizzate su "Richiedi", quando si tenta di eseguire un'operazione non sicura su oggetti ADO e RDS, verrà visualizzato un messaggio di avviso relativo all'accesso della pagina a un'origine dati su un altro dominio. L'utente ha la possibilità di rispondere in modo affermativo o negativo. Nel primo caso, l'operazione verrà completata. In caso contrario, verrà interrotta. -------------------------------------------------- 4. PROBLEMI NOTI, LIMITAZIONI, SOLUZIONI ALTERNATIVE E NOTE AGGIORNATE ALLA DOCUMENTAZIONE -------------------------------------------------- 4.1 La rappresentazione del client in RDS non è correntemente supportata dal sistema operativo. 4.2 Quando si creano "server virtuali" con Internet Information Server 4.0, per configurare il server in modo che funzioni con RDS sono necessari i seguenti due passaggi supplementari: A) Quando si imposta il server, selezionare l'opzione per l'esecuzione dell'accesso. B) Spostare msadcs.dll in directoryprincipalevirtuale\msadc, dove directoryprincipalevirtuale è la home directory del proprio server virtuale. 4.3 Quando si utilizza RDS in un server che esegue IIS, il numero di thread creati per processore può essere controllato gestendo il registro di configurazione nel server Web. Tale valore può influenzare le prestazioni in una situazione di traffico ridotto o eccessivo, esclusivamente in scenari con query di grandi dimensioni. L'utente dovrebbe ottenere risultati ottimali. È necessario modificare il valore specifico riportato di seguito: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ ADCThreads dove ADCThreads è un valore REG_DWORD aggiunto dall'utente nell'intervallo compreso fra 1 e 50. Il valore predefinito è 6. Se il valore specificato dal registro di configurazione è maggiore di 50, verrà utilizzato il valore massimo, cioè 50. Sarà necessario creare questo valore in quanto in base all'impostazione predefinita non è incluso nel registro di configurazione. 4.4 In base all'impostazione predefinita, ADO è installato con una configurazione DataFactory "protetta" del server RDS. I componenti del server RDS sono in modalità protetta se quanto segue corrisponde alla realtà: 1. Con DataFactory è richiesto il gestore (reso obbligatorio da un'impostazione del registro di configurazione) 2. Il gestore predefinito, msdfmap.handler, è registrato ed è presente nell'elenco dei gestori sicuri e contrassegnato come gestore predefinito. 3. Il file Msdfmap.ini è installato nella directory Windows. È necessario configurare questo file secondo le proprie esigenze, prima di utilizzare RDS in modalità a tre livelli. Se necessario, è possibile configurare un'installazione DataFactory non limitata. DataFactory può essere utilizzato direttamente, senza il gestore personalizzato. È tuttavia possibile utilizzare un gestore personalizzato modificando le stringhe di connessione, ma non è necessario. Viene fornito il file del registro di configurazione handsafe.reg per impostare le voci del registro del gestore per una configurazione protetta. Per lavorare in modalità protetta, eseguire il file handsafe.reg. Viene fornito il file del registro di configurazione handunsf.reg per impostare le voci del registro del gestore per una configurazione non protetta. Per lavorare in modalità non protetta, eseguire il file handunsf.reg. Per ulteriori informazioni sulla funzione del gestore di personalizzazioni di RDS, vedere l'articolo "Using the Customization Handler Feature in RDS 2.0" all'indirizzo http://www.microsoft.com/data/techmat.htm (in lingua inglese). 4.5 Il metodo Find consente di effettuare una ricerca del record corrispondente ai criteri specificati all'interno di un recordset nella direzione specificata partendo dalla posizione di riga corrente. Se non è stata impostata alcuna riga corrente prima di chiamare il metodo Find, si verificherà un errore. 4.6 Per poter utilizzare gli eventi ADO FetchProgress e FetchComplete con Visual Basic, è necessaria almeno la versione 6 di Visual Basic. 4.7 Le operazioni elencate di seguito sono considerate "sicure" per l'utilizzo nelle espressioni CALC di Data Shaping: Abs, Asc, Atn, CBool, CByte, CCur, CDate, CDbl, Chr, ChrB, ChrW, Chr$, ChrB$, CInt, CLng, Cos, CSng, CStr, Cvar, CVDate, CVErr, Date, Date$, DateAdd, DateDiff, DatePart, DateSerial, DateValue, Day, DDB, Error, Error$, Exp, Fix, Format, Format$, FV, Hex, Hex$, Hour, IIF, InStr, Int, IPmt, IRR, IsDate, IsEmpty, IsError, IsNull, IsNumeric, IsObject, LCase, LCase$, Left, LeftB, Left$, LeftB$, Len, Log, LTrim, LTrim$, Mid, Mid$, Minute, MIRR, Month, Now, NPer, NPV, Oct, Oct$, Pmt, PPmt, PV, QBColor, Rate, RGB, Right, RightB, Right$, RightB$, Rnd, RTrim, RTrim$, Second, Sgn, Sin, SLN, Space, Space$, Sqr, Str, Str$, StrComp, StrConv, String, String$, SYD, Tan, Time,Time$, Timer, TimeSerial, TimeValue, Trim, Trim$, TypeName, UCase, UCase$, Val, VarType , Weekday, Year 4.8 ADO 2.1 non supporta oggetti Recordset persistenti gerarchici in formato XML. 4.9 Non è possibile aggiornare i dati di un recordset in sola lettura salvando i dati in formato XML e modificando il file XML. Se i dati XML sono stati modificati, si verificherà un errore quando si cercherà di riaprire il recordset dal file XML. 4.10 Quando si utilizza adUseClient o la modalità di accesso remoto in SQL Server 6.5 con Service Pack 4, specificando la parola chiave DISTINCT nelle query verranno ignorati i set di risultati aggiornabili. Si tratta di un problema di SQL Server che verrà risolto in una versione futura del Service Pack 4.11 I valori DataTypeEnum elencati nella guida di riferimento per il programmatore di ActiveX Data Objects contengono degli errori. I valori enum di seguito riportati fanno parte dell'elenco ma non esistono e non possono essere utilizzati. adArray, adByRef, adVector I valori di seguito riportati non sono presenti nell'elenco ma esistono e possono essere utilizzati. adChapter Un valore di capitolo di 4 byte utilizzato per identificare le righe in un set di righe secondario (DBTYPE_HCHAPTER). adDBFileTime Un valore di ora del file (DBTYPE_DBFILETIME). adFileTime Un valore di 64 bit che rappresenta il numero di intervalli di 100 nanosecondi dal primo gennaio 1601 (DBTYPE_FILETIME). adPropVariant PROPVARIANT di automazione (DBTYPE_PROP_VARIANT). adVarNumeric Un valore numerico (solo oggetto Parameter). 4.12 L'elenco dei valori validi per il parametro Options del metodo Execute degli oggetti Connection e Command contiene degli errori. Il valore ExecuteOptionEnum è elencato erroneamente due volte. Dovrebbe essere elencato una volta sola, come riportato di seguito. adCmdTable Indica che ADO dovrebbe valutare CommandText come un nome di tabella e generare una query SQL che restituisca tutte le righe dalla tabella nominata in CommandText. Il valore CommandTypeEnum riportato di seguito non è presente nell'elenco ma esiste e può essere utilizzato: adCmdFile Indica che il provider dovrebbe valutare CommandText come un nome di file. I valori ExecuteOptionEnum di seguito riportati non sono presenti nell'elenco, ma esistono e possono essere utilizzati. adAsyncFetchNonBlocking Indica che il thread principale non si blocca durante l'estrazione. Se la riga richiesta non viene estratta, la riga corrente si sposta automaticamente alla fine del file. adExecuteNoRecords Indica che CommandText è un comando o una procedura memorizzata che non restituisce righe (ad esempio un comando che inserisce solo dati). Se vengono reperite delle righe, verranno scartate e non saranno restituite. Sempre combinato con adCmdText o adCmdStoredProc. 4.13 L'elenco dei valori QueryType Enum per il metodo OpenSchema di un oggetto Connection contiene degli errori. I valori riportati di seguito non sono compresi nell'elenco ma esistono e possono essere utilizzati. Enum Colonne restrittive adSchemaDBInfoKeywords nessuno adSchemaDBInfoLiterals nessuno adSchemaCubes CATALOG_NAME SCHEMA_NAME CUBE_NAME adSchemaDimensions CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_NAME DIMENSION_UNIQUE_NAME adSchemaHierarchies CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_NAME HIERARCHY_UNIQUE_NAME adSchemaLevels CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_NAME LEVEL_UNIQUE_NAME adSchemaMeasures CATALOG_NAME SCHEMA_NAME CUBE_NAME MEASURE_NAME MEASURE_UNIQUE_NAME adSchemaProperties CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_UNIQUE_NAME MEMBER_UNIQUE_NAME PROPERTY_TYPE PROPERTY_NAME adSchemaMembers CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_UNIQUE_NAME LEVEL_NUMBER MEMBER_NAME MEMBER_UNIQUE_NAME MEMBER_CAPTION MEMBER_TYPE Operatore struttura (vedere di seguito) Gli ultimi sette valori Enum (adSchemaCubes a adSchemaMembers) dovrebbero essere utilizzati con provider di dati a più dimensioni. Per ulteriori informazioni, inclusa la definizione della restrizione dell'operatore di struttura di adSchemaMembers, vedere la guida di riferimento per il programmatore di OLE DB per OLAP. 4.14 I valori AffectEnum elencati nell'argomento relativo al metodo CancelBatch nella guida di riferimento per il programmatore di ActiveX Data Objects contengono un errore. I valori riportati di seguito non sono presenti nell'elenco ma esistono e possono essere utilizzati. adAffectAllChapters Annulla le modifiche in sospeso per tutti i capitoli. 4.15 Il valore adModeShareDenyNone ConnectModeEnum non è descritto in modo corretto nell'argomento relativo alla proprietà Mode. La descrizione corretta è la seguente: adModeShareDenyNone Consente di aprire la connessione senza autorizzazione. Non può essere negato l'accesso in scrittura o in lettura. 4.16 La proprietà Index restituiva precedentemente un errore se sull'oggetto Recordset non era impostato alcun indice. Con ADO 2.1 in MDAC 2.1 Service Pack 1, restituisce una stringa vuota e viene eseguita correttamente.